Changeset: abf8423b97ec for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=abf8423b97ec
Modified Files:
monetdb5/modules/mal/mal_io.c
monetdb5/optimizer/opt_mergetable.c
Branch: linear-hashing
Log Message:
Fix resource leak detected by Coverity
and defensive code
diffs (63 lines):
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
@@ -48,6 +48,8 @@ io_stdin(Client cntxt, MalBlkPtr mb, Mal
{
bstream **ret= (bstream**) getArgReference(stk,pci,0);
(void) mb;
+ if( cntxt->fdin == NULL)
+ throw(MAL, "io.print", SQLSTATE(HY002) "Input channel missing");
*ret = cntxt->fdin;
return MAL_SUCCEED;
}
@@ -57,6 +59,8 @@ io_stdout(Client cntxt, MalBlkPtr mb, Ma
{
stream **ret= (stream**) getArgReference(stk,pci,0);
(void) mb;
+ if( cntxt->fdout == NULL)
+ throw(MAL, "io.print", SQLSTATE(HY002) "Output channel
missing");
*ret = cntxt->fdout;
return MAL_SUCCEED;
}
@@ -69,6 +73,8 @@ IOprintBoth(Client cntxt, MalBlkPtr mb,
stream *fp = cntxt->fdout;
(void) mb;
+ if( cntxt->fdout == NULL)
+ throw(MAL, "io.print", SQLSTATE(HY002) "Output channel
missing");
if (tpe == TYPE_any)
tpe = stk->stk[pci->argv[indx]].vtype;
diff --git a/monetdb5/optimizer/opt_mergetable.c
b/monetdb5/optimizer/opt_mergetable.c
--- a/monetdb5/optimizer/opt_mergetable.c
+++ b/monetdb5/optimizer/opt_mergetable.c
@@ -1417,8 +1417,13 @@ mat_group_new(MalBlkPtr mb, InstrPtr p,
pushInstruction(mb, q);
if(setPartnr(ml, getArg(ml->v[b].mi,i), getArg(q,0), i) ||
setPartnr(ml, getArg(ml->v[b].mi,i), getArg(q,1), i) ||
- setPartnr(ml, getArg(ml->v[b].mi,i), getArg(q,2), i))
+ setPartnr(ml, getArg(ml->v[b].mi,i), getArg(q,2), i)){
+ freeInstruction(r0);
+ freeInstruction(r1);
+ freeInstruction(r2);
+ freeInstruction(attr);
return -1;
+ }
/* add result to mats */
r0 = addArgument(mb,r0,getArg(q,0));
@@ -1429,8 +1434,13 @@ mat_group_new(MalBlkPtr mb, InstrPtr p,
getArg(r, 0) = newTmpVariable(mb, atp);
r = addArgument(mb, r, getArg(q,1));
r = addArgument(mb, r, getArg(ml->v[b].mi,i));
- if(setPartnr(ml, getArg(ml->v[b].mi,i), getArg(r,0), i))
+ if(setPartnr(ml, getArg(ml->v[b].mi,i), getArg(r,0), i)){
+ freeInstruction(r0);
+ freeInstruction(r1);
+ freeInstruction(r2);
+ freeInstruction(attr);
return -1;
+ }
pushInstruction(mb,r);
attr = addArgument(mb, attr, getArg(r, 0));
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list