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