Changeset: 711d7c0e0760 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=711d7c0e0760
Branch: default
Log Message:
merged
diffs (100 lines):
diff --git a/monetdb5/modules/mal/remote.c b/monetdb5/modules/mal/remote.c
--- a/monetdb5/modules/mal/remote.c
+++ b/monetdb5/modules/mal/remote.c
@@ -1211,6 +1211,7 @@ static str RMTregisterInternal(Client cn
prg->def = NULL;
if ((prg->def = copyMalBlk(sym->def)) == NULL) {
+ MT_lock_unset(&c->lock);
freeSymbol(prg);
throw(MAL, "Remote register", MAL_MALLOC_FAIL);
}
@@ -1303,8 +1304,10 @@ static str RMTexec(Client cntxt, MalBlkP
/* this call should be a single transaction over the channel*/
MT_lock_set(&c->lock);
- if(!no_return_arguments && pci->argc - pci->retc < 3) /* conn, mod,
func, ... */
+ if(!no_return_arguments && pci->argc - pci->retc < 3) { /* conn, mod,
func, ... */
+ MT_lock_unset(&c->lock);
throw(MAL, "remote.exec", ILLEGAL_ARGUMENT " MAL instruction
misses arguments");
+ }
len = 0;
/* count how big a buffer we need */
@@ -1324,8 +1327,10 @@ static str RMTexec(Client cntxt, MalBlkP
}
len += 2;
buflen = len + 1;
- if ((qbuf = GDKmalloc(buflen)) == NULL)
+ if ((qbuf = GDKmalloc(buflen)) == NULL) {
+ MT_lock_unset(&c->lock);
throw(MAL, "remote.exec", SQLSTATE(HY013) MAL_MALLOC_FAIL);
+ }
len = 0;
diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c
--- a/tools/monetdbe/monetdbe.c
+++ b/tools/monetdbe/monetdbe.c
@@ -729,14 +729,27 @@ monetdbe_open_remote(monetdbe_database_i
return -2;
}
MalStkPtr stk = prepareMALstack(mb, mb->vsize);
+ if (!stk) {
+ mdbe->msg = createException(MAL,
"monetdbe.monetdbe_open_remote", MAL_MALLOC_FAIL);
+ freeSymbol(c->curprg);
+ c->curprg= NULL;
+ return -2;
+ }
stk->keepAlive = TRUE;
if ( (mdbe->msg = runMALsequence(c, mb, 1, 0, stk, 0, 0)) !=
MAL_SUCCEED ) {
+ freeStack(stk);
freeSymbol(c->curprg);
c->curprg= NULL;
return -2;
}
- mdbe->mid = GDKstrdup(*getArgReference_str(stk, p, 0));
+ if ((mdbe->mid = GDKstrdup(*getArgReference_str(stk, p, 0))) == NULL) {
+ mdbe->msg = createException(MAL,
"monetdbe.monetdbe_open_remote", MAL_MALLOC_FAIL);
+ freeStack(stk);
+ freeSymbol(c->curprg);
+ c->curprg= NULL;
+ return -2;
+ }
garbageCollector(c, mb, stk, TRUE);
freeStack(stk);
@@ -962,6 +975,10 @@ monetdbe_result_cb(void* context, char*
return mdbe->msg;
BAT* order = BATdescriptor(results[0].id);
+ if (!order) {
+ mdbe->msg =
createException(MAL,"monetdbe.monetdbe_result_cb",SQLSTATE(HY005) "Cannot
access column descriptor ");
+ return mdbe->msg;
+ }
mvc_result_table(be, 0, (int) nr_results, Q_TABLE, order);
@@ -1431,7 +1448,8 @@ monetdbe_execute(monetdbe_statement *stm
MalStkPtr glb = (MalStkPtr) (NULL);
Symbol s = findSymbolInModule(mdbe->c->usermodule, q->f->imp);
- mdbe->msg = callMAL(mdbe->c, s->def, &glb, stmt_internal->args, 0);
+ if ((mdbe->msg = callMAL(mdbe->c, s->def, &glb, stmt_internal->args,
0)) != MAL_SUCCEED)
+ goto cleanup;
if (!b->results && b->rowcnt >= 0 && affected_rows)
*affected_rows = b->rowcnt;
@@ -2064,8 +2082,10 @@ remote_cleanup:
if (!blob_is_null(be+j)) {
size_t len = be[j].size;
b = (blob*) GDKmalloc(blobsize(len));
- if (b == NULL)
+ if (b == NULL) {
mdbe->msg =
createException(MAL, "monetdbe.monetdbe_append", MAL_MALLOC_FAIL);
+ goto cleanup;
+ }
b->nitems = len;
memcpy(b->data, be[j].data, len);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list