Changeset: 5b4b0c450529 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5b4b0c450529
Modified Files:
        monetdb5/mal/mal_client.c
        monetdb5/mal/mal_import.c
        monetdb5/mal/mal_session.c
        monetdb5/modules/atoms/inet.c
        monetdb5/modules/atoms/url.c
        monetdb5/modules/kernel/alarm.c
        monetdb5/modules/mal/bbp.c
        monetdb5/modules/mal/calc.c
        monetdb5/modules/mal/clients.c
        monetdb5/modules/mal/inspect.c
        monetdb5/modules/mal/language.c
        monetdb5/modules/mal/mal_io.c
        monetdb5/modules/mal/mdb.c
        monetdb5/modules/mal/pcre.c
        monetdb5/modules/mal/sabaoth.c
Branch: default
Log Message:

Defensive lines


diffs (truncated from 392 to 300 lines):

diff --git a/monetdb5/mal/mal_client.c b/monetdb5/mal/mal_client.c
--- a/monetdb5/mal/mal_client.c
+++ b/monetdb5/mal/mal_client.c
@@ -103,6 +103,10 @@ MCpushClientInput(Client c, bstream *new
        c->fdin = new_input;
        c->listing = listing;
        c->prompt = prompt ? GDKstrdup(prompt) : GDKstrdup("");
+       if(c->prompt == 0) {
+               GDKfree(x);
+               return -1;
+       }
        c->promptlength = strlen(c->prompt);
        c->yycur = 0;
        return 0;
@@ -324,10 +328,14 @@ Client
 MCforkClient(Client father)
 {
        Client son = NULL;
+       str prompt;
+
        if (father == NULL)
                return NULL;
        if (father->father != NULL)
                father = father->father;
+       if((prompt = GDKstrdup(father->prompt)) == NULL)
+               return NULL;
        if ((son = MCinitClient(father->user, father->fdin, father->fdout))) {
                son->fdin = NULL;
                son->fdout = father->fdout;
@@ -337,11 +345,18 @@ MCforkClient(Client father)
                son->scenario = father->scenario;
                if (son->prompt)
                        GDKfree(son->prompt);
-               son->prompt = GDKstrdup(father->prompt);
-               son->promptlength = strlen(father->prompt);
+               son->prompt = prompt;
+               son->promptlength = strlen(prompt);
                /* reuse the scopes wherever possible */
-               if (son->usermodule == 0)
+               if (son->usermodule == 0) {
                        son->usermodule = userModule();
+                       if(son->usermodule == 0) {
+                               MCcloseClient(son);
+                               return NULL;
+                       }
+               }
+       } else {
+               GDKfree(prompt);
        }
        return son;
 }
diff --git a/monetdb5/mal/mal_import.c b/monetdb5/mal/mal_import.c
--- a/monetdb5/mal/mal_import.c
+++ b/monetdb5/mal/mal_import.c
@@ -271,6 +271,10 @@ evalFile(str fname, int listing)
                throw(MAL,"mal.eval","Can not create user context");
        }
        c->curmodule = c->usermodule = userModule();
+       if(c->curmodule == NULL) {
+               MCcloseClient(c);
+               throw(MAL,"mal.eval",SQLSTATE(HY001) MAL_MALLOC_FAIL);
+       }
        c->promptlength = 0;
        c->listing = listing;
 
@@ -317,8 +321,12 @@ compileString(Symbol *fcn, Client cntxt,
 
        s = mal_cmdline(s, &len);
        qry = s;
-       if (old == s)
+       if (old == s) {
                qry = GDKstrdup(s);
+               if(!qry)
+                       throw(MAL,"mal.eval",SQLSTATE(HY001) MAL_MALLOC_FAIL);
+       }
+
        mal_unquote(qry);
        b = (buffer *) GDKzalloc(sizeof(buffer));
        if (b == NULL) {
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
@@ -40,8 +40,16 @@ malBootstrap(void)
        str bootfile = "mal_init", s = NULL;
 
        c = MCinitClient((oid) 0, 0, 0);
+       if(c == NULL) {
+               fprintf(stderr,"#malBootstrap:Failed to initialise client");
+               mal_exit();
+       }
        assert(c != NULL);
        c->curmodule = c->usermodule = userModule();
+       if(c->usermodule == NULL) {
+               fprintf(stderr,"#malBootstrap:Failed to initialise client MAL 
module");
+               mal_exit();
+       }
        if ( (msg = defaultScenario(c)) ) {
                GDKfree(msg);
                fprintf(stderr,"#malBootstrap:Failed to initialise default 
scenario");
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
@@ -555,6 +555,8 @@ INEThost(str *retval, const inet *val)
 
        if (in_isnil(val)) {
                *retval = GDKstrdup(str_nil);
+               if( *retval == NULL)
+                       throw(MAL,"INEThost", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        } else {
                ip = GDKmalloc(sizeof(char) * 16);
                if( ip == NULL)
@@ -700,6 +702,8 @@ INETtext(str *retval, const inet *val)
 
        if (in_isnil(val)) {
                *retval = GDKstrdup(str_nil);
+               if( *retval == NULL)
+                       throw(MAL,"INETtext", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        } else {
                ip = GDKmalloc(sizeof(char) * 20);
                if( ip == NULL)
@@ -723,6 +727,8 @@ INETabbrev(str *retval, const inet *val)
 
        if (in_isnil(val)) {
                *retval = GDKstrdup(str_nil);
+               if (*retval == NULL)
+                       throw(MAL, "inet.abbrev", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
        } else {
                unsigned int msk;
                unsigned char m[4];
diff --git a/monetdb5/modules/atoms/url.c b/monetdb5/modules/atoms/url.c
--- a/monetdb5/modules/atoms/url.c
+++ b/monetdb5/modules/atoms/url.c
@@ -749,6 +749,8 @@ str
 URLnew(url *u, str *val)
 {
        *u = GDKstrdup(*val);
+       if (*u == NULL)
+               throw(MAL, "url.new", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
 
@@ -792,5 +794,7 @@ URLnew4(url *u, str *protocol, str *serv
 str URLnoop(url *u, url *val)
 {
        *u = GDKstrdup(*val);
+       if (*u == NULL)
+               throw(MAL, "url.noop", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
diff --git a/monetdb5/modules/kernel/alarm.c b/monetdb5/modules/kernel/alarm.c
--- a/monetdb5/modules/kernel/alarm.c
+++ b/monetdb5/modules/kernel/alarm.c
@@ -192,6 +192,8 @@ ALARMctime(str *res)
 
        base[24] = 0;                           /* squash final newline */
        *res = GDKstrdup(base);
+       if (*res == NULL)
+               throw(MAL, "alarm.ctime", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
 
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
@@ -128,6 +128,8 @@ str
 CMDbbpName(str *ret, bat *bid)
 {
        *ret = (str) GDKstrdup(BBP_logical(*bid));
+       if (*ret == NULL)
+               throw(MAL, "catalog.bbpName", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
 
@@ -472,5 +474,7 @@ CMDsetName(str *rname, const bat *bid, s
        }
        *rname = GDKstrdup(*name);
        BBPunfix(b->batCacheid);
+       if (*rname == NULL)
+               throw(MAL, "bbp.setName", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
diff --git a/monetdb5/modules/mal/calc.c b/monetdb5/modules/mal/calc.c
--- a/monetdb5/modules/mal/calc.c
+++ b/monetdb5/modules/mal/calc.c
@@ -96,6 +96,8 @@ CMDvarADDstr(str *ret, str *s1, str *s2)
 
        if (strNil(*s1) || strNil(*s2)) {
                *ret= GDKstrdup(str_nil);
+               if (*ret == NULL)
+                       return mythrow(MAL, "calc.+", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
                return MAL_SUCCEED;
        }
        s = GDKzalloc((l1 = strlen(*s1)) + strlen(*s2) + 1);
@@ -117,6 +119,8 @@ CMDvarADDstrint(str *ret, str *s1, int *
 
        if (strNil(*s1) || is_int_nil(*i)) {
                *ret= GDKstrdup(str_nil);
+               if (*ret == NULL)
+                       return mythrow(MAL, "calc.+", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
                return MAL_SUCCEED;
        }
        len = strlen(*s1) + 16;         /* maxint = 2147483647 which fits 
easily */
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
@@ -65,6 +65,8 @@ CLTgetScenario(Client cntxt, MalBlkPtr m
                *getArgReference_str(stk,pci,0) = GDKstrdup(cntxt->scenario);
        else
                *getArgReference_str(stk,pci,0) = GDKstrdup("nil");
+       if(*getArgReference_str(stk,pci,0) == NULL)
+               throw(MAL, "clients.getScenario", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
 
@@ -76,8 +78,11 @@ CLTsetScenario(Client cntxt, MalBlkPtr m
        (void) mb;
        msg = setScenario(cntxt, *getArgReference_str(stk,pci,1));
        *getArgReference_str(stk,pci,0) = 0;
-       if (msg == NULL)
+       if (msg == NULL) {
                *getArgReference_str(stk,pci,0) = GDKstrdup(cntxt->scenario);
+               if(*getArgReference_str(stk,pci,0) == NULL)
+                       throw(MAL, "clients.setScenario", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
+       }
        return msg;
 }
 
@@ -372,6 +377,8 @@ str CLTmd5sum(str *ret, str *pw) {
        char *mret = mcrypt_MD5Sum(*pw, strlen(*pw));
        *ret = GDKstrdup(mret);
        free(mret);
+       if(*ret == NULL)
+               throw(MAL, "clients.md5sum", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 #else
        (void) ret;
@@ -385,6 +392,8 @@ str CLTsha1sum(str *ret, str *pw) {
        char *mret = mcrypt_SHA1Sum(*pw, strlen(*pw));
        *ret = GDKstrdup(mret);
        free(mret);
+       if(*ret == NULL)
+               throw(MAL, "clients.sha1sum", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 #else
        (void) ret;
@@ -398,6 +407,8 @@ str CLTripemd160sum(str *ret, str *pw) {
        char *mret = mcrypt_RIPEMD160Sum(*pw, strlen(*pw));
        *ret = GDKstrdup(mret);
        free(mret);
+       if(*ret == NULL)
+               throw(MAL, "clients.ripemd160sum", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 #else
        (void) ret;
@@ -435,6 +446,8 @@ str CLTsha2sum(str *ret, str *pw, int *b
        }
        *ret = GDKstrdup(mret);
        free(mret);
+       if(*ret == NULL)
+               throw(MAL, "clients.sha2sum", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
 
@@ -442,6 +455,8 @@ str CLTbackendsum(str *ret, str *pw) {
        char *mret = mcrypt_BackendSum(*pw, strlen(*pw));
        *ret = GDKstrdup(mret);
        free(mret);
+       if(*ret == NULL)
+               throw(MAL, "clients.backendsum", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
 
@@ -584,6 +599,8 @@ CLTshutdown(Client cntxt, MalBlkPtr mb, 
        *ret = GDKstrdup(buf);
        if ( force)
                mal_exit();
+       if(*ret == NULL)
+               throw(MAL, "mal.shutdown", SQLSTATE(HY001) MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
 
diff --git a/monetdb5/modules/mal/inspect.c b/monetdb5/modules/mal/inspect.c
--- a/monetdb5/modules/mal/inspect.c
+++ b/monetdb5/modules/mal/inspect.c
@@ -540,6 +540,8 @@ INSPECTgetEnvironmentKey(str *ret, str *
        if (s == 0)
                throw(MAL, "inspect.getEnvironment", "environment variable '%s' 
not found", *key);
        *ret = GDKstrdup(s);
+       if (*ret == NULL)
+               throw(MAL, "inspect.getEnvironment", SQLSTATE(HY001) 
MAL_MALLOC_FAIL);
        return MAL_SUCCEED;
 }
 
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
@@ -29,8 +29,14 @@
 str
 CMDraise(str *ret, str *msg)
 {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to