Changeset: beb4978f2307 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=beb4978f2307
Modified Files:
        monetdb5/mal/mal_authorize.c
        monetdb5/mal/mal_listing.c
        monetdb5/mal/mal_profiler.c
        monetdb5/mal/mal_session.c
        monetdb5/modules/atoms/json.c
        monetdb5/modules/atoms/mtime.c
        monetdb5/modules/kernel/batcolor.c
        monetdb5/modules/mal/clients.c
        monetdb5/modules/mal/language.c
        monetdb5/modules/mal/mal_mapi.c
        monetdb5/modules/mal/wlc.c
Branch: Mar2018
Log Message:

Coverity-inspired fixes.


diffs (truncated from 308 to 300 lines):

diff --git a/monetdb5/mal/mal_authorize.c b/monetdb5/mal/mal_authorize.c
--- a/monetdb5/mal/mal_authorize.c
+++ b/monetdb5/mal/mal_authorize.c
@@ -183,9 +183,9 @@ AUTHinitTables(const char *passwd) {
                /* don't check this bat since we'll fix it below */
                GDKdebug &= ~CHECKMASK;
                user = BATdescriptor(bid);
+               GDKdebug = dbg;
                if (user == NULL)
                        throw(MAL, "initTables.user", SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);
-               GDKdebug = dbg;
                isNew = 0;
        }
        assert(user);
diff --git a/monetdb5/mal/mal_listing.c b/monetdb5/mal/mal_listing.c
--- a/monetdb5/mal/mal_listing.c
+++ b/monetdb5/mal/mal_listing.c
@@ -80,6 +80,7 @@ renderTerm(MalBlkPtr mb, MalStkPtr stk, 
 
                        if( nbuf == 0){
                                GDKfree(buf);
+                               GDKfree(cv);
                                addMalException(mb,"renderTerm:Failed to 
allocate");
                                return NULL;
                        }
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
@@ -342,7 +342,7 @@ This information can be used to determin
                                        tname = getTypeName(tpe);
                                        logadd("\"type\":\"%s\",%s", 
tname,pret);
                                        cv = 
VALformat(&stk->stk[getArg(pci,j)]);
-                                       stmtq = mal_quote(cv, strlen(cv));
+                                       stmtq = cv ? mal_quote(cv, strlen(cv)) 
: NULL;
                                        if (stmtq != NULL && strlen(stmtq) > 
LOGLEN/2) {
                                                truncated = 
truncate_string(stmtq);
                                                GDKfree(stmtq);
diff --git a/monetdb5/mal/mal_session.c b/monetdb5/mal/mal_session.c
--- a/monetdb5/mal/mal_session.c
+++ b/monetdb5/mal/mal_session.c
@@ -158,12 +158,12 @@ MSinitClientPrg(Client cntxt, str mod, s
        if (cntxt->curprg  && idcmp(nme, cntxt->curprg->name) == 0)
                return MSresetClientPrg(cntxt, putName(mod), putName(nme));
        cntxt->curprg = newFunction(putName(mod), putName(nme), FUNCTIONsymbol);
+       if( cntxt->curprg == 0)
+               throw(MAL, "initClientPrg", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        if( (idx= findVariable(cntxt->curprg->def,"main")) >=0)
                setVarType(cntxt->curprg->def, idx, TYPE_void);
        insertSymbol(cntxt->usermodule,cntxt->curprg);
        
-       if( cntxt->curprg == 0)
-               throw(MAL, "initClientPrg", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        if (cntxt->glb == NULL )
                cntxt->glb = newGlobalStack(MAXGLOBALS + 
cntxt->curprg->def->vsize);
        if( cntxt->glb == NULL)
@@ -368,7 +368,7 @@ MSscheduleClient(str command, str challe
        if((msg = MSinitClientPrg(c, "user", "main")) != MAL_SUCCEED) {
                mnstr_printf(fout, "!could not allocate space\n");
                exit_streams(fin, fout);
-               GDKfree(msg);
+               freeException(msg);
                GDKfree(command);
                return;
        }
@@ -394,7 +394,12 @@ MSscheduleClient(str command, str challe
        c->compute_column_widths = compute_column_widths;
 
        mnstr_settimeout(c->fdin->s, 50, GDKexiting);
-       MSserveClient(c);
+       msg = MSserveClient(c);
+       if (msg != MAL_SUCCEED) {
+               mnstr_printf(fout, "!could not serve client\n");
+               exit_streams(fin, fout);
+               freeException(msg);
+       }
 }
 
 /*
diff --git a/monetdb5/modules/atoms/json.c b/monetdb5/modules/atoms/json.c
--- a/monetdb5/modules/atoms/json.c
+++ b/monetdb5/modules/atoms/json.c
@@ -1741,6 +1741,7 @@ JSONrenderRowArray(BAT **bl, MalBlkPtr m
                snprintf(row + len, lim - len, "%s,", val ? val : "null");
                len += l + 1;
                GDKfree(val);
+               val = NULL;
        }
        if (row[1])
                row[len - 1] = ']';
@@ -1752,6 +1753,7 @@ JSONrenderRowArray(BAT **bl, MalBlkPtr m
 
   memfail:
        GDKfree(row);
+       GDKfree(val);
        return NULL;
 }
 
diff --git a/monetdb5/modules/atoms/mtime.c b/monetdb5/modules/atoms/mtime.c
--- a/monetdb5/modules/atoms/mtime.c
+++ b/monetdb5/modules/atoms/mtime.c
@@ -1396,6 +1396,7 @@ str
 MTIMEprelude(void *ret)
 {
        const char *msg = NULL;
+       char *err;
        ValRecord vr;
        int ticks;
        union lng_tzone ltz;
@@ -1463,8 +1464,9 @@ MTIMEprelude(void *ret)
        TIMEZONES("Azore Islands", -1 * 60);
        TIMEZONES("Hawaii/USA", -10 * 60);
        TIMEZONES("American Samoa", -11 * 60);
-       MTIMErule_fromstr(&RULE_MAR, &s1);
-       MTIMErule_fromstr(&RULE_OCT, &s2);
+       if ((err = MTIMErule_fromstr(&RULE_MAR, &s1)) != MAL_SUCCEED ||
+               (err = MTIMErule_fromstr(&RULE_OCT, &s2)) != MAL_SUCCEED)
+               return err;
        TIMEZONES2("Kazakhstan", 6 * 60, RULE_MAR, RULE_OCT);
        TIMEZONES2("Moscow/Russia", 3 * 60, RULE_MAR, RULE_OCT);
        TIMEZONES2("East/Europe", 2 * 60, RULE_MAR, RULE_OCT);
diff --git a/monetdb5/modules/kernel/batcolor.c 
b/monetdb5/modules/kernel/batcolor.c
--- a/monetdb5/modules/kernel/batcolor.c
+++ b/monetdb5/modules/kernel/batcolor.c
@@ -28,6 +28,7 @@ str CLRbat##NAME(bat *ret, const bat *l)
        BUN p,q;                                                                
                                                        \
        const TYPE1 *x;                                                         
                                                \
        TYPE2 y, *yp = &y;                                                      
                                                \
+       char *msg = MAL_SUCCEED;                                                
                                        \
                                                                                
                                                                \
        if( (b= BATdescriptor(*l)) == NULL )                                    
                        \
                throw(MAL, "batcolor." #NAME, SQLSTATE(HY002) 
RUNTIME_OBJECT_MISSING);  \
@@ -49,8 +50,8 @@ str CLRbat##NAME(bat *ret, const bat *l)
                        y = (TYPE2) TYPE2##_nil;                                
                                        \
                        bn->tnonil = 0;                                         
                                                \
                        bn->tnil = 1;                                           
                                                \
-               } else                                                          
                                                        \
-                       FUNC(yp,x);                                             
                                                        \
+               } else if ((msg = FUNC(yp,x)) != MAL_SUCCEED)                   
                \
+                       goto bunins_failed;                                     
                                                \
                bunfastapp(bn, yp);                                             
                                                \
        }                                                                       
                                                                \
        *ret = bn->batCacheid;                                                  
                                        \
@@ -60,6 +61,8 @@ str CLRbat##NAME(bat *ret, const bat *l)
 bunins_failed:                                                                 
                                                \
        BBPunfix(b->batCacheid);                                                
                                        \
        BBPunfix(bn->batCacheid);                                               
                                        \
+       if (msg)                                                                
                                                        \
+               return msg;                                                     
                                                        \
        throw(MAL, "batcolor." #NAME, OPERATION_FAILED " During bulk 
operation"); \
 }
 
@@ -90,6 +93,7 @@ str CLRbat##NAME(bat *ret, const bat *l,
        BUN p,q;                                                                
                                                        \
        const TYPE *x, *x2, *x3;                                                
                                        \
        color y, *yp = &y;                                                      
                                                \
+       char *msg = MAL_SUCCEED;                                                
                                        \
                                                                                
                                                                \
        b= BATdescriptor(*l);                                                   
                                        \
        b2= BATdescriptor(*bid2);                                               
                                        \
@@ -129,8 +133,8 @@ str CLRbat##NAME(bat *ret, const bat *l,
                        y = color_nil;                                          
                                                \
                        bn->tnonil = 0;                                         
                                                \
                        bn->tnil = 1;                                           
                                                \
-               } else                                                          
                                                        \
-                       FUNC(yp,x,x2,x3);                                       
                                                \
+               } else if ((msg = FUNC(yp,x,x2,x3)) != MAL_SUCCEED)             
                \
+                       goto bunins_failed;                                     
                                                \
                bunfastapp(bn, yp);                                             
                                                \
        }                                                                       
                                                                \
        *ret = bn->batCacheid;                                                  
                                        \
@@ -144,6 +148,8 @@ bunins_failed:                                              
                                                                        \
        BBPunfix(b2->batCacheid);                                               
                                        \
        BBPunfix(b3->batCacheid);                                               
                                        \
        BBPunfix(bn->batCacheid);                                               
                                        \
+       if (msg)                                                                
                                                        \
+               return msg;                                                     
                                                        \
        throw(MAL, "batcolor." #NAME, OPERATION_FAILED " During bulk 
operation"); \
 }
 
diff --git a/monetdb5/modules/mal/clients.c b/monetdb5/modules/mal/clients.c
--- a/monetdb5/modules/mal/clients.c
+++ b/monetdb5/modules/mal/clients.c
@@ -454,6 +454,8 @@ str CLTsha2sum(str *ret, str *pw, int *b
 
 str CLTbackendsum(str *ret, str *pw) {
        char *mret = mcrypt_BackendSum(*pw, strlen(*pw));
+       if (mret == NULL)
+               throw(MAL, "clients.backendsum", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
        *ret = GDKstrdup(mret);
        free(mret);
        if(*ret == NULL)
diff --git a/monetdb5/modules/mal/language.c b/monetdb5/modules/mal/language.c
--- a/monetdb5/modules/mal/language.c
+++ b/monetdb5/modules/mal/language.c
@@ -187,7 +187,7 @@ CMDregisterFunction(Client cntxt, MalBlk
        str msg, fcnName, modName, ahelp;
 
        msg= compileString(&sym, cntxt,*code);
-       if( sym) {
+       if( msg == MAL_SUCCEED) {
                assert(cntxt->usermodule);
                //mnstr_printf(cntxt->fdout,"#register FUNCTION %s.%s\n",
                        //getModuleId(sym->def->stmt[0]), 
getFunctionId(sym->def->stmt[0]));
@@ -200,8 +200,7 @@ CMDregisterFunction(Client cntxt, MalBlk
                        GDKfree(ahelp);
                        throw(MAL, "language.register", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
                }
-               if( help)
-                       mb->help= ahelp;
+               mb->help= ahelp;
                sig= getSignature(sym);
                sym->name= fcnName;
                setModuleId(sig, modName);
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
@@ -590,6 +590,10 @@ SERVERlisten(int *Port, str *Usockfile, 
        } else {
 #ifdef HAVE_SYS_UN_H
                usockfile = GDKstrdup(*Usockfile);
+               if (usockfile == NULL) {
+                       GDKfree(psock);
+                       throw(MAL,"mal_mapi.listen", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
+               }
 #else
                usockfile = NULL;
                GDKfree(psock);
@@ -606,8 +610,7 @@ SERVERlisten(int *Port, str *Usockfile, 
 
        if (port > 65535) {
                GDKfree(psock);
-               if (usockfile)
-                       GDKfree(usockfile);
+               GDKfree(usockfile);
                throw(ILLARG, "mal_mapi.listen", OPERATION_FAILED ": port 
number should be between 1 and 65535");
        }
 
@@ -619,8 +622,7 @@ SERVERlisten(int *Port, str *Usockfile, 
                                          , 0);
                if (sock == INVALID_SOCKET) {
                        GDKfree(psock);
-                       if (usockfile)
-                               GDKfree(usockfile);
+                       GDKfree(usockfile);
                        throw(IO, "mal_mapi.listen",
                                  OPERATION_FAILED ": creation of stream socket 
failed: %s",
 #ifdef _MSC_VER
@@ -641,8 +643,7 @@ SERVERlisten(int *Port, str *Usockfile, 
                        const char *err = strerror(errno);
 #endif
                        GDKfree(psock);
-                       if (usockfile)
-                               GDKfree(usockfile);
+                       GDKfree(usockfile);
                        closesocket(sock);
                        throw(IO, "mal_mapi.listen", OPERATION_FAILED ": 
setsockptr failed %s", err);
                }
@@ -675,8 +676,7 @@ SERVERlisten(int *Port, str *Usockfile, 
                                }
                                closesocket(sock);
                                GDKfree(psock);
-                               if (usockfile)
-                                       GDKfree(usockfile);
+                               GDKfree(usockfile);
                                throw(IO, "mal_mapi.listen",
                                          OPERATION_FAILED ": bind to stream 
socket port %d "
                                          "failed: %s", port,
@@ -694,8 +694,7 @@ SERVERlisten(int *Port, str *Usockfile, 
                if (getsockname(sock, (SOCKPTR) &server, &length) == 
SOCKET_ERROR) {
                        closesocket(sock);
                        GDKfree(psock);
-                       if (usockfile)
-                               GDKfree(usockfile);
+                       GDKfree(usockfile);
                        throw(IO, "mal_mapi.listen",
                                  OPERATION_FAILED ": failed getting socket 
name: %s",
 #ifdef _MSC_VER
@@ -708,8 +707,7 @@ SERVERlisten(int *Port, str *Usockfile, 
                if(listen(sock, maxusers) == SOCKET_ERROR) {
                        closesocket(sock);
                        GDKfree(psock);
-                       if (usockfile)
-                               GDKfree(usockfile);
+                       GDKfree(usockfile);
                        throw(IO, "mal_mapi.listen",
                                  OPERATION_FAILED ": failed to set socket to 
listen %s",
 #ifdef _MSC_VER
@@ -764,6 +762,7 @@ SERVERlisten(int *Port, str *Usockfile, 
                if(remove(usockfile) == -1 && errno != ENOENT) {
                        char *e = createException(IO, "mal_mapi.listen", 
OPERATION_FAILED ": remove UNIX socket file");
                        closesocket(usock);
+                       GDKfree(usockfile);
                        GDKfree(psock);
                        return e;
                }
diff --git a/monetdb5/modules/mal/wlc.c b/monetdb5/modules/mal/wlc.c
--- a/monetdb5/modules/mal/wlc.c
+++ b/monetdb5/modules/mal/wlc.c
@@ -460,7 +460,8 @@ WLCsettime(Client cntxt, InstrPtr pci, I
        clk = clock.tv_sec;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to