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

Reply via email to