Changeset: ec2096728c7a for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ec2096728c7a Modified Files: gdk/gdk_aggr.c gdk/gdk_imprints.c gdk/gdk_interprocess.c gdk/gdk_logger.c gdk/gdk_search.c gdk/gdk_select.c gdk/gdk_utils.c tools/merovingian/daemon/connections.c Branch: default Log Message:
Merge with Dec2016 branch. diffs (263 lines): diff --git a/gdk/gdk_aggr.c b/gdk/gdk_aggr.c --- a/gdk/gdk_aggr.c +++ b/gdk/gdk_aggr.c @@ -2416,9 +2416,13 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e, /* there is a candidate list, replace b (and g, if * given) with just the values we're interested in */ b = BATproject(s, b); + if (b == NULL) + return NULL; freeb = 1; if (g) { g = BATproject(s, g); + if (g == NULL) + goto bunins_failed; freeg = 1; } } @@ -2436,7 +2440,8 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e, BBPunfix(g->batCacheid); return bn; } - BATsort(&t1, &t2, NULL, g, NULL, NULL, 0, 0); + if (BATsort(&t1, &t2, NULL, g, NULL, NULL, 0, 0) != GDK_SUCCEED) + goto bunins_failed; if (freeg) BBPunfix(g->batCacheid); g = t1; @@ -2444,7 +2449,11 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e, } else { t2 = NULL; } - BATsort(&t1, NULL, NULL, b, t2, g, 0, 0); + if (BATsort(&t1, NULL, NULL, b, t2, g, 0, 0) != GDK_SUCCEED) { + if (t2) + BBPunfix(t2->batCacheid); + goto bunins_failed; + } if (freeb) BBPunfix(b->batCacheid); b = t1; @@ -2454,7 +2463,7 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e, bn = COLnew(g ? min : 0, b->ttype, ngrp, TRANSIENT); if (bn == NULL) - return NULL; + goto bunins_failed; bi = bat_iterator(b); nil = ATOMnilptr(b->ttype); @@ -2511,7 +2520,8 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e, } index = (BUN) (r + (p-r-1) * quantile); v = BUNtail(bi, index); - BUNappend(bn, v, FALSE); + if (BUNappend(bn, v, FALSE) != GDK_SUCCEED) + goto bunins_failed; nils += (*atomcmp)(v, nil) == 0; } @@ -2532,7 +2542,8 @@ BATgroupquantile(BAT *b, BAT *g, BAT *e, BBPunfix(b->batCacheid); if (freeg) BBPunfix(g->batCacheid); - BBPunfix(bn->batCacheid); + if (bn) + BBPunfix(bn->batCacheid); return NULL; } diff --git a/gdk/gdk_imprints.c b/gdk/gdk_imprints.c --- a/gdk/gdk_imprints.c +++ b/gdk/gdk_imprints.c @@ -309,6 +309,7 @@ BATimprints(BAT *b) bat p = VIEWtparent(b); o = b; b = BATdescriptor(p); + assert(b); if (BATcheckimprints(b)) { BBPunfix(b->batCacheid); return GDK_SUCCEED; diff --git a/gdk/gdk_interprocess.c b/gdk/gdk_interprocess.c --- a/gdk/gdk_interprocess.c +++ b/gdk/gdk_interprocess.c @@ -81,6 +81,9 @@ GDKinitmmap(size_t id, size_t size, void int fd; int mod = MMAP_READ | MMAP_WRITE | MMAP_SEQUENTIAL | MMAP_SYNC | MAP_SHARED; char *path = NULL; + + assert(return_ptr != NULL); + GDKmmapfile(address, 100, id); /* round up to multiple of GDK_mmap_pagesize with a @@ -109,9 +112,7 @@ GDKinitmmap(size_t id, size_t size, void goto cleanup; } GDKfree(path); - if (return_ptr != NULL) { - *return_ptr = ptr; - } + *return_ptr = ptr; if (return_size != NULL) { *return_size = size; } diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c --- a/gdk/gdk_logger.c +++ b/gdk/gdk_logger.c @@ -1128,6 +1128,9 @@ bm_tids(BAT *b, BAT *d) BUN sz = BATcount(b); BAT *tids = COLnew(0, TYPE_void, 0, TRANSIENT); + if (tids == NULL) + return NULL; + BATtseqbase(tids, 0); BATsetcount(tids, sz); tids->trevsorted = 0; @@ -1217,11 +1220,23 @@ bm_subcommit(logger *lg, BAT *list_bid, n[i++] = catalog_bid->batCacheid; n[i++] = catalog_nme->batCacheid; n[i++] = dcatalog->batCacheid; - if (BATcount(dcatalog) > (BATcount(catalog_nme)/2) && catalog_bid == list_bid && catalog_nme == list_nme && lg->catalog_bid == catalog_bid) { - BAT *bids, *nmes, *tids = bm_tids(catalog_bid, dcatalog); + if (BATcount(dcatalog) > (BATcount(catalog_nme)/2) && + catalog_bid == list_bid && + catalog_nme == list_nme && + lg->catalog_bid == catalog_bid) { + BAT *bids, *nmes, *tids; + tids = bm_tids(catalog_bid, dcatalog); bids = logbat_new(TYPE_int, BATSIZE, PERSISTENT); nmes = logbat_new(TYPE_str, BATSIZE, PERSISTENT); + if (tids == NULL || bids == NULL || nmes == NULL) { + if (tids) + BBPunfix(tids->batCacheid); + BBPreclaim(bids); + BBPreclaim(nmes); + GDKfree(n); + return GDK_FAIL; + } BATappend(bids, catalog_bid, tids, TRUE); BATappend(nmes, catalog_nme, tids, TRUE); logbat_destroy(tids); @@ -1297,7 +1312,7 @@ logger_set_logdir_path(char *filename, c * Load data and persist it in the BATs * Convert 32bit data to 64bit, unless running in read-only mode */ static int -logger_load(int debug, const char* fn, char filename[PATHLENGTH], logger* lg) +logger_load(int debug, const char *fn, char filename[PATHLENGTH], logger *lg) { int id = LOG_SID; FILE *fp; @@ -1607,13 +1622,11 @@ logger_load(int debug, const char* fn, c error: if (fp) fclose(fp); - if (lg) { - GDKfree(lg->fn); - GDKfree(lg->dir); - GDKfree(lg->local_dir); - GDKfree(lg->buf); - GDKfree(lg); - } + GDKfree(lg->fn); + GDKfree(lg->dir); + GDKfree(lg->local_dir); + GDKfree(lg->buf); + GDKfree(lg); return LOG_ERR; } @@ -2250,7 +2263,7 @@ log_bat(logger *lg, BAT *b, const char * for (p = b->batInserted; p < BUNlast(b) && ok == GDK_SUCCEED; p++) { const void *t = BUNtail(bi, p); - ok = (ok != GDK_SUCCEED) ? ok : wt(t, lg->log, 1); + ok = wt(t, lg->log, 1); } } @@ -2358,9 +2371,13 @@ log_tend(logger *lg) BAT *cands, *tids, *bids; tids = bm_tids(lg->snapshots_tid, lg->dsnapshots); + if (tids == NULL) { + fprintf(stderr, "!ERROR: log_tend: bm_tids failed\n"); + return LOG_ERR; + } cands = BATselect(lg->snapshots_tid, tids, &lg->tid, &lg->tid, TRUE, TRUE, FALSE); - if (tids == NULL || cands == NULL) { + if (cands == NULL) { fprintf(stderr, "!ERROR: log_tend: subselect failed\n"); return LOG_ERR; } diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c --- a/gdk/gdk_select.c +++ b/gdk/gdk_select.c @@ -1622,7 +1622,7 @@ BATselect(BAT *b, BAT *s, const void *tl rs += low; bn = COLnew(0, TYPE_oid, high-low, TRANSIENT); if (bn == NULL) - GDKerror("memory allocation error"); + return NULL; rbn = (oid *) Tloc((bn), 0); diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c --- a/gdk/gdk_utils.c +++ b/gdk/gdk_utils.c @@ -1646,15 +1646,6 @@ GDKmalloc_prefixsize(size_t size) return s; } -void -GDKsetmallocsuccesscount(lng count) -{ - (void) count; -#ifndef NDEBUG - GDK_malloc_success_count = count; -#endif -} - /* * The emergency flag can be set to force a fatal error if needed. @@ -1914,6 +1905,15 @@ GDKstrdup(const char *s) #endif /* STATIC_CODE_ANALYSIS */ +void +GDKsetmallocsuccesscount(lng count) +{ + (void) count; +#ifndef NDEBUG + GDK_malloc_success_count = count; +#endif +} + #undef GDKstrndup char * GDKstrndup(const char *s, size_t n) diff --git a/tools/merovingian/daemon/connections.c b/tools/merovingian/daemon/connections.c --- a/tools/merovingian/daemon/connections.c +++ b/tools/merovingian/daemon/connections.c @@ -156,14 +156,14 @@ openConnectionUNIX(int *ret, const char int sock; int omask; + if (strlen(path) >= sizeof(server.sun_path)) + return newErr("pathname for UNIX stream socket too long"); + sock = socket(AF_UNIX, SOCK_STREAM, 0); if (sock == -1) return(newErr("creation of UNIX stream socket failed: %s", strerror(errno))); - if (strlen(path) >= sizeof(server.sun_path)) - return newErr("pathname for UNIX stream socket too long"); - memset(&server, 0, sizeof(struct sockaddr_un)); server.sun_family = AF_UNIX; strncpy(server.sun_path, path, sizeof(server.sun_path) - 1); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list