Changeset: ebff12da64d1 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ebff12da64d1
Modified Files:
monetdb5/mal/mal_instruction.c
monetdb5/optimizer/opt_pipes.c
monetdb5/optimizer/opt_support.c
sql/backends/monet5/sql_execute.c
Branch: default
Log Message:
unchecked malloc, found with mallocs.SQL.py
diffs (74 lines):
diff --git a/monetdb5/mal/mal_instruction.c b/monetdb5/mal/mal_instruction.c
--- a/monetdb5/mal/mal_instruction.c
+++ b/monetdb5/mal/mal_instruction.c
@@ -392,10 +392,9 @@ newInstruction(MalBlkPtr mb, str modnme,
InstrPtr
copyInstruction(InstrPtr p)
{
- InstrPtr new;
- new = (InstrPtr) GDKmalloc(offsetof(InstrRecord, argv) + p->maxarg *
sizeof(p->maxarg));
- if( new == NULL) {
- GDKerror("copyInstruction:failed to allocated space");
+ InstrPtr new = (InstrPtr) GDKmalloc(offsetof(InstrRecord, argv) +
p->maxarg * sizeof(p->maxarg));
+ if(new == NULL) {
+ GDKerror("copyInstruction: failed to allocated space");
return new;
}
oldmoveInstruction(new, p);
diff --git a/monetdb5/optimizer/opt_pipes.c b/monetdb5/optimizer/opt_pipes.c
--- a/monetdb5/optimizer/opt_pipes.c
+++ b/monetdb5/optimizer/opt_pipes.c
@@ -495,6 +495,9 @@ addOptimizerPipe(Client cntxt, MalBlkPtr
if (pipes[i].mb) {
for (j = 1; j < pipes[i].mb->stop - 1; j++) {
p = copyInstruction(pipes[i].mb->stmt[j]);
+ if (!p) { // oh malloc you cruel mistress
+ throw(MAL, "optimizer.addOptimizerPipe", "Out
of memory");
+ }
for (k = 0; k < p->argc; k++)
getArg(p, k) = cloneVariable(mb, pipes[i].mb,
getArg(p, k));
typeChecker(cntxt->fdout, cntxt->nspace, mb, p, FALSE);
diff --git a/monetdb5/optimizer/opt_support.c b/monetdb5/optimizer/opt_support.c
--- a/monetdb5/optimizer/opt_support.c
+++ b/monetdb5/optimizer/opt_support.c
@@ -124,8 +124,8 @@ optimizeMALBlock(Client cntxt, MalBlkPtr
/* force at least once a complete type check by resetting the type
check flag */
- resetMalBlk(mb,mb->stop);
- chkProgram(cntxt->fdout,cntxt->nspace,mb);
+ resetMalBlk(mb, mb->stop);
+ chkProgram(cntxt->fdout, cntxt->nspace,mb);
if (mb->errors)
throw(MAL, "optimizer.MALoptimizer", "Start with inconsistent
MAL plan");
@@ -133,7 +133,7 @@ optimizeMALBlock(Client cntxt, MalBlkPtr
* When no optimzer call is found, be terminate. */
do {
qot = 0;
- for (pc = 0; pc < mb->stop ; pc++) {
+ for (pc = 0; pc < mb->stop; pc++) {
p = getInstrPtr(mb, pc);
if (getModuleId(p) == optimizerRef && p->fcn &&
p->token != REMsymbol) {
/* all optimizers should behave like patterns */
@@ -143,7 +143,7 @@ optimizeMALBlock(Client cntxt, MalBlkPtr
msg = (str) (*p->fcn) (cntxt, mb, 0, p);
if (msg) {
str place = getExceptionPlace(msg);
- str nmsg=
createException(getExceptionType(msg), place, "%s", getExceptionMessage(msg));
+ str nmsg =
createException(getExceptionType(msg), place, "%s", getExceptionMessage(msg));
GDKfree(place);
GDKfree(msg);
msg = nmsg;
diff --git a/sql/backends/monet5/sql_execute.c
b/sql/backends/monet5/sql_execute.c
--- a/sql/backends/monet5/sql_execute.c
+++ b/sql/backends/monet5/sql_execute.c
@@ -310,7 +310,7 @@ SQLrun(Client c, backend *be, mvc *m){
// This include template constants, BAT sizes.
if( m->emod & mod_debug)
mb->keephistory = TRUE;
- msg = SQLoptimizeQuery(c,mb);
+ msg = SQLoptimizeQuery(c, mb);
mb->keephistory = FALSE;
if( mb->errors){
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list