Changeset: 97e2203a8d2b for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=97e2203a8d2b Modified Files: gdk/gdk_logger.c gdk/gdk_value.c geom/monetdb5/geom.c monetdb5/mal/mal_builder.c monetdb5/mal/mal_instruction.c monetdb5/mal/mal_module.c monetdb5/mal/mal_stack.c monetdb5/modules/atoms/blob.c monetdb5/modules/atoms/inet.c monetdb5/modules/atoms/uuid.c monetdb5/modules/atoms/xml.c monetdb5/modules/mal/calc.c monetdb5/modules/mal/manual.c monetdb5/modules/mal/tablet.c monetdb5/modules/mal/txtsim.c monetdb5/optimizer/opt_mergetable.c sql/backends/monet5/UDF/pyapi/emit.c sql/backends/monet5/mal_backend.c sql/backends/monet5/rel_bin.c sql/backends/monet5/sql.c sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_gencode.c sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_statement.c sql/backends/monet5/sql_statistics.c sql/backends/monet5/sql_upgrades.c sql/backends/monet5/vaults/fits/fits.c sql/backends/monet5/vaults/netcdf/netcdf.c sql/backends/monet5/vaults/shp/shp.c sql/common/sql_keyword.c sql/common/sql_mem.c sql/common/sql_string.c sql/server/rel_updates.c sql/server/sql_atom.c sql/server/sql_mvc.c sql/server/sql_qc.c sql/server/sql_scan.c sql/storage/bat/bat_table.c sql/storage/bat/res_table.c sql/storage/store.c sql/storage/store_dependency.c sql/storage/store_sequence.c sql/test/emptydb-upgrade-chain-hge/Tests/check.stable.out.int128 sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-chain/Tests/check.stable.out sql/test/emptydb-upgrade-chain/Tests/check.stable.out.32bit sql/test/emptydb-upgrade-chain/Tests/check.stable.out.int128 sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade-hge/Tests/check.stable.out.int128 sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/emptydb-upgrade/Tests/check.stable.out sql/test/emptydb-upgrade/Tests/check.stable.out.32bit sql/test/emptydb-upgrade/Tests/check.stable.out.int128 sql/test/emptydb-upgrade/Tests/upgrade.stable.out sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128 sql/test/emptydb/Tests/check.SQL.py sql/test/emptydb/Tests/check.stable.out sql/test/emptydb/Tests/check.stable.out.32bit sql/test/emptydb/Tests/check.stable.out.int128 sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128 sql/test/testdb-upgrade/Tests/upgrade.stable.out sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128 tools/mserver/mserver5.c Branch: data-vaults Log Message:
Merge with default diffs (truncated from 1793 to 300 lines): diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -345,7 +345,10 @@ log_read_updates(logger *lg, trans *tr, if (tt < TYPE_str) tv = lg->buf; else if (tt > TYPE_str) + // FIXME unchecked_malloc ATOMnil can return NULL + tv = ATOMnil(tt); + assert(l->nr <= (lng) BUN_MAX); if (l->flag == LOG_UPDATE) { uid = COLnew(0, ht, (BUN) l->nr, PERSISTENT); @@ -372,6 +375,8 @@ log_read_updates(logger *lg, trans *tr, } } else { void *(*rh) (ptr, stream *, size_t) = ht == TYPE_void ? BATatoms[TYPE_oid].atomRead : BATatoms[ht].atomRead; + // FIXME unchecked_malloc ATOMnil can return NULL + void *hv = ATOMnil(ht); for (; l->nr > 0; l->nr--) { diff --git a/gdk/gdk_value.c b/gdk/gdk_value.c --- a/gdk/gdk_value.c +++ b/gdk/gdk_value.c @@ -143,6 +143,7 @@ VALcopy(ValPtr d, const ValRecord *s) if (!ATOMextern(s->vtype)) { *d = *s; } else if (s->val.pval == 0) { + // FIXME unchecked_malloc ATOMnil can return NULL d->val.pval = ATOMnil(s->vtype); d->vtype = s->vtype; } else if (s->vtype == TYPE_str) { diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c --- a/geom/monetdb5/geom.c +++ b/geom/monetdb5/geom.c @@ -12,6 +12,7 @@ */ #include "geom.h" +#include "mal_exception.h" int TYPE_mbr; @@ -1745,8 +1746,9 @@ dumpPointsPoint(BAT *idBAT, BAT *geomBAT str err = MAL_SUCCEED; (*lvl)++; - newPath = GDKmalloc(pathLength + lvlDigitsNum + 1); + if( newPath == NULL) + throw(MAL, "geom.PointsPoint", MAL_MALLOC_FAIL); sprintf(newPath, "%s%u", path, *lvl); if (BUNappend(idBAT, newPath, TRUE) != GDK_SUCCEED || @@ -1805,8 +1807,9 @@ dumpPointsPolygon(BAT *idBAT, BAT *geomB throw(MAL, "geom.DumpPoints", "GEOSGetExteriorRing failed"); (*lvl)++; - newPath = GDKmalloc(pathLength + lvlDigitsNum + extraLength + 1); + if( newPath == NULL) + throw(MAL,"geom.dumpPointsPolygon",MAL_MALLOC_FAIL); sprintf(newPath, "%s%u%s", path, *lvl, extraStr); //get the points in the exterior ring @@ -1859,6 +1862,8 @@ dumpPointsMultiGeometry(BAT *idBAT, BAT lvl++; newPath = GDKmalloc(pathLength + lvlDigitsNum + extraLength + 1); + if( newPath == NULL) + throw(MAL,"geom.dumpPointsGeometry",MAL_MALLOC_FAIL); sprintf(newPath, "%s%u%s", path, lvl, extraStr); //*secondLevel = 0; @@ -2166,6 +2171,8 @@ wkbFROMSTR_withSRID(char *geomWKT, int * size_t sizeOfInfo = strlen(geomWKT) - strlen(polyhedralSurface); geomWKT_original = geomWKT; geomWKT = GDKmalloc(sizeOfInfo + strlen(multiPolygon) + 1); + if( geomWKT == NULL) + throw(MAL,"geomWKT",MAL_MALLOC_FAIL); strcpy(geomWKT, multiPolygon); memcpy(geomWKT + strlen(multiPolygon), &geomWKT_original[strlen(polyhedralSurface)], sizeOfInfo); geomWKT[sizeOfInfo + strlen(multiPolygon)] = '\0'; @@ -2219,8 +2226,11 @@ wkbaFROMSTR_withSRID(char *fromStr, int //read the number of items from the beginning of the string memcpy(&items, fromStr, sizeof(int)); skipBytes += sizeof(int); - *toArray = GDKmalloc(wkba_size(items)); + if( *toArray == NULL){ + GDKerror("FROMSTR_withSRID" MAL_MALLOC_FAIL); + return 0; + } for (i = 0; i < items; i++) { size_t parsedBytes; @@ -5057,6 +5067,10 @@ wkbTOSTR(char **geomWKT, int *len, wkb * *len = (int) dstStrLen + 1; GDKfree(*geomWKT); *geomWKT = GDKmalloc(*len); + if( *geomWKT == NULL){ + GDKerror("wkbTOSTR" MAL_MALLOC_FAIL); + return 0; + } } snprintf(*geomWKT, *len, "\"%s\"", wkt); GEOSFree(wkt); @@ -5064,6 +5078,10 @@ wkbTOSTR(char **geomWKT, int *len, wkb * if (*len < 4) { GDKfree(*geomWKT); *geomWKT = GDKmalloc(*len = 4); + if( *geomWKT == NULL){ + GDKerror("wkbTOSTR" MAL_MALLOC_FAIL); + return 0; + } } strcpy(*geomWKT, "nil"); } @@ -5222,6 +5240,10 @@ mbrTOSTR(char **dst, int *len, mbr *atom if (*len < (int) dstStrLen + 1 || *dst == NULL) { GDKfree(*dst); *dst = GDKmalloc(*len = (int) dstStrLen + 1); + if( *dst == NULL){ + GDKerror("mbrTOSTR" MAL_MALLOC_FAIL); + return 0; + } } if (dstStrLen > 3) @@ -5263,6 +5285,10 @@ mbrFROMSTR(char *src, int *len, mbr **at if (*atom) GDKfree(*atom); *atom = GDKmalloc(*len = sizeof(mbr)); + if( *atom == NULL){ + GDKerror("mbrFROMSTR" MAL_MALLOC_FAIL); + return 0; + } } if (nil) { nchars = 3; @@ -5390,6 +5416,10 @@ wkbaTOSTR(char **toStr, int *len, wkba * char *nilStr = "nil"; char *toStrPtr = NULL, *itemsNumStr = GDKmalloc((itemsNumDigits + 1) * sizeof(char)); + if( itemsNumStr == NULL){ + GDKerror("wkbaTOSTR" MAL_MALLOC_FAIL); + return 0; + } sprintf(itemsNumStr, "%d", items); dataSize = strlen(itemsNumStr); @@ -5408,6 +5438,10 @@ wkbaTOSTR(char **toStr, int *len, wkba * if (*len < 4 || *toStr == NULL) { GDKfree(*toStr); *toStr = GDKmalloc(*len = 4); + if( *toStr == NULL){ + GDKerror("wkbaTOSTR" MAL_MALLOC_FAIL); + return 0; + } } strcpy(*toStr, "nil"); return 3; @@ -5772,7 +5806,16 @@ wkbContains_point_bat(bat *out, wkb **a, /*Lets get the polygon */ token = strtok_r(token, ")", &saveptr1); vert_x = GDKmalloc(POLY_NUM_VERT * sizeof(double)); + if ( vert_x == NULL){ + GDKfree(geom_str); + throw(MAL,"wkbContains_point_bat", MAL_MALLOC_FAIL); + } vert_y = GDKmalloc(POLY_NUM_VERT * sizeof(double)); + if ( vert_y == NULL){ + GDKfree(geom_str); + GDKfree(vert_x); + throw(MAL,"wkbContains_point_bat", MAL_MALLOC_FAIL); + } for (str2 = token;; str2 = NULL) { subtoken = strtok_r(str2, ",", &saveptr2); diff --git a/monetdb5/mal/mal_builder.c b/monetdb5/mal/mal_builder.c --- a/monetdb5/mal/mal_builder.c +++ b/monetdb5/mal/mal_builder.c @@ -521,6 +521,10 @@ pushNil(MalBlkPtr mb, InstrPtr q, int tp cst.val.oval= oid_nil; } else if (ATOMextern(tpe)) { ptr p = ATOMnil(tpe); + if( p == NULL){ + freeInstruction(q); + return NULL; + } VALset(&cst, tpe, p); } else { if (VALinit(&cst, tpe, ATOMnilptr(tpe)) == NULL) { 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 @@ -249,13 +249,13 @@ copyMalBlk(MalBlkPtr old) mb->keephistory = old->keephistory; mb->var = (VarRecord *) GDKzalloc(sizeof(VarRecord) * old->vsize); - mb->activeClients = 1; - if (mb->var == NULL) { GDKfree(mb); GDKerror("copyMalBlk:" MAL_MALLOC_FAIL); return NULL; } + + mb->activeClients = 1; mb->vsize = old->vsize; mb->vtop = old->vtop; mb->vid = old->vid; diff --git a/monetdb5/mal/mal_module.c b/monetdb5/mal/mal_module.c --- a/monetdb5/mal/mal_module.c +++ b/monetdb5/mal/mal_module.c @@ -31,6 +31,8 @@ Module moduleIndex[MODULE_HASH_SIZE] = { static void newModuleSpace(Module scope){ scope->space = (Symbol *) GDKzalloc(MAXSCOPE * sizeof(Symbol)); + if( scope->space == 0) + GDKerror("newModuleSpace:"MAL_MALLOC_FAIL); } void diff --git a/monetdb5/mal/mal_stack.c b/monetdb5/mal/mal_stack.c --- a/monetdb5/mal/mal_stack.c +++ b/monetdb5/mal/mal_stack.c @@ -50,6 +50,7 @@ */ #include "monetdb_config.h" #include "mal_stack.h" +#include "mal_exception.h" /* #define DEBUG_MAL_STACK*/ @@ -60,6 +61,7 @@ newGlobalStack(int size) s = (MalStkPtr) GDKzalloc(stackSize(size) + offsetof(MalStack, stk)); if (!s) { + GDKerror("newGlobalStack:"MAL_MALLOC_FAIL); return NULL; } s->stksize = size; diff --git a/monetdb5/modules/atoms/blob.c b/monetdb5/modules/atoms/blob.c --- a/monetdb5/modules/atoms/blob.c +++ b/monetdb5/modules/atoms/blob.c @@ -578,6 +578,8 @@ BLOBblob_blob(blob **d, blob **s) if( (*s)->nitems == ~(size_t) 0){ *d= BLOBnull(); + if( *d == NULL) + throw(MAL,"blob", MAL_MALLOC_FAIL); } else { *d= b= (blob *) GDKmalloc(len); if( b == NULL) 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 @@ -752,8 +752,9 @@ INETabbrev(str *retval, const inet *val) * &: 00 00 00 00 * all zero, thus no bits on the right side of the mask */ - ip = GDKmalloc(sizeof(char) * 19); + if( ip == NULL) + throw(MAL,"inet.abbrev", MAL_MALLOC_FAIL); if (msk > 24) { snprintf(ip, sizeof(char) * 19, "%d.%d.%d.%d/%d", diff --git a/monetdb5/modules/atoms/uuid.c b/monetdb5/modules/atoms/uuid.c --- a/monetdb5/modules/atoms/uuid.c +++ b/monetdb5/modules/atoms/uuid.c @@ -172,8 +172,11 @@ UUIDgenerateUuid(uuid **retval) uuid *u; int i = 0, r = 0; - if (*retval == NULL) + if (*retval == NULL){ *retval = GDKmalloc(UUID_SIZE); + if( *retval == NULL) + throw(MAL,"uuid.generate",MAL_MALLOC_FAIL); + } u = *retval; #ifdef HAVE_UUID uuid_generate(u->u); diff --git a/monetdb5/modules/atoms/xml.c b/monetdb5/modules/atoms/xml.c --- a/monetdb5/modules/atoms/xml.c +++ b/monetdb5/modules/atoms/xml.c @@ -669,6 +669,10 @@ XMLtoString(str *s, int *len, xml src) if (l >= *len) { GDKfree(*s); *s = (str) GDKmalloc(l); + if ( *s == NULL){ + GDKerror("XMLtoString:" MAL_MALLOC_FAIL); + return -1; + } } strcpy(*s, src); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list